/**
 * 图片URL过滤工具函数
 * 用于过滤图片URL中的API路径前缀
 */

/**
 * 过滤图片URL中的API路径
 * @param {string} url 原始图片URL
 * @returns {string} 过滤后的图片URL
 */
export function filterImageUrl(url) {
  if (!url) return url;
  
  // 过滤常见的API路径前缀
  const apiPrefixes = [
    '/api/',
    '/prod-api/',
    '/admin/',
    '/api/admin/',
    '/prod-api/admin/'
  ];
  
  let filteredUrl = url;
  
  // 移除API前缀
  apiPrefixes.forEach(prefix => {
    if (filteredUrl.includes(prefix + 'crmebimage/')) {
      filteredUrl = filteredUrl.replace(prefix + 'crmebimage/', '/crmebimage/');
    }
  });
  
  return filteredUrl;
}

/**
 * 批量过滤图片URL数组
 * @param {Array} urls 图片URL数组
 * @returns {Array} 过滤后的图片URL数组
 */
export function filterImageUrls(urls) {
  if (!Array.isArray(urls)) return urls;
  
  return urls.map(url => filterImageUrl(url));
}

/**
 * 过滤对象中的图片URL字段
 * @param {Object} obj 包含图片URL的对象
 * @param {Array} imageFields 图片字段名数组，默认为 ['image', 'cover', 'avatar', 'picUrl']
 * @returns {Object} 过滤后的对象
 */
export function filterObjectImageUrls(obj, imageFields = ['image', 'cover', 'avatar', 'picUrl']) {
  if (!obj || typeof obj !== 'object') return obj;
  
  const filteredObj = { ...obj };
  
  imageFields.forEach(field => {
    if (filteredObj[field]) {
      filteredObj[field] = filterImageUrl(filteredObj[field]);
    }
  });
  
  return filteredObj;
}

/**
 * 过滤数组对象中的图片URL
 * @param {Array} array 对象数组
 * @param {Array} imageFields 图片字段名数组
 * @returns {Array} 过滤后的数组
 */
export function filterArrayImageUrls(array, imageFields = ['image', 'cover', 'avatar', 'picUrl']) {
  if (!Array.isArray(array)) return array;
  
  return array.map(item => filterObjectImageUrls(item, imageFields));
}

/**
 * 处理富文本内容中的图片URL
 * @param {string} content 富文本内容
 * @returns {string} 处理后的内容
 */
export function filterContentImageUrls(content) {
  if (!content) return content;
  
  // 替换img标签中的src属性
  return content.replace(
    /src=["']([^"']*crmebimage[^"']*)["']/g,
    (match, url) => {
      const filteredUrl = filterImageUrl(url);
      return match.replace(url, filteredUrl);
    }
  );
} 